리엑트 함수형 컴포넌트의 생명주기
#resource
#react
작성일:2025. 4. 24.
수정일:2025. 4. 24.
과거엔 클래스형 컴포넌트가 주를 이루었고 클래스형 컴포넌트에는 생명 주기를 메서드로 제공했지만, 현재는 함수형 컴포넌트가 주를 이루고 있다. 함수형 컴포넌트는 생명 주기를 메서드로 제공하지 않지만, 훅을 사용하여 생명 주기를 관리할 수 있다.
React 함수형 컴포넌트의 생명주기는 더 선언적이고 예측 가능하며, 부작용(side effects)과 상태 관리를 더 명확하게 분리할 수 있게 해준다.
생명주기를 위한 훅#
-
마운트(Mount)-컴포넌트가 DOM에 추가될때
useState
: 상태 초기화useEffect(callback,[])
: 빈 의존성 배열을 사용하면 컴포넌트가 마운트될 때 한 번만 실행된다. 이는 클래스 컴포넌트의componentDidMount
와 유사하다.
-
업데이트(Update)-컴포넌트가 리렌더링될 때
useEffect(callback,[dpendencies])
: 의존성 배열의 값이 변경될 때마다 실행된다. 이는 클래스 컴포넌트의componentDidUpdate
와 유사하다.useMemo
,useCallback
: 의존성이 변경될 때만 값이나 함수를 재계산하여 최적화한다.
-
언마운트(Unmount)-컴포넌트가 DOM에서 제거될 때
useEffect
의 클린업 함수:useEffect(()=>{return()=>{/*정리 로직*/}},[])
. 이는 크래스 컴포넌트의componentWillUnmount
와 유사하다.
-
에러 처리
useErrorBoundary
(별도 라이브러리) 또는 상위 컴포넌트에서 ErrorBoundary 클래스 사용
추가로 알아두면 좋은 개념들#
- 조건부 렌더링: 함수형 컴포넌트는 조건에 따라 다른 JSX를 반환할 수 있다.
- 렌더 최적화:
React.memo
를 사용하여 불필요한 리렌더링을 방지할 수 있다. - 커스텀 Hooks: 여러 생명주기 관련 로직을 재사용 가능한 자체 Hook으로 만들 수 있다.